声明 模块 "tty" {

    //@@{ 网络:net }
    导入 * 转为 网络 来自 "net";

    //@@{ 是一个终端:isatty }
    函数 是一个终端(文件描述符: 数字): 真假;

    //@@{ 读流_:ReadStream, 网络:net, 套接字_:Socket }
    类别 读流_ 扩展 网络.套接字_ {

        //@@{ 是原始:isRaw }
        是原始: 真假;

        //@@{ 设置原始模式:setRawMode }
        设置原始模式(模式: 真假): 无值;

        //@@{ 是绑定终端:isTTY }
        是绑定终端: 真假;
    }
    /**
     * -1 - to the left from cursor
     *  0 - the entire line
     *  1 - to the right from cursor
     */

    //@@{ 方向_:Direction }
    类型 方向_ = -1 | 0 | 1;

    //@@{ 写流_:WriteStream, 网络:net, 套接字_:Socket }
    类别 写流_ 扩展 网络.套接字_ {

        //@@{ 添加监听器:addListener }
        添加监听器(事件: 文字, 监听器: (...参数组: 任意[]) => 无值): 本体;

        //@@{ 添加监听器:addListener, "调整":"resize" }
        添加监听器(事件: "调整", 监听器: () => 无值): 本体;

        //@@{ 发出:emit }
        发出(事件: 文字 | 符号, ...参数组: 任意[]): 真假;

        //@@{ 发出:emit, "调整":"resize" }
        发出(事件: "调整"): 真假;

        //@@{ 正在:on }
        正在(事件: 文字, 监听器: (...参数组: 任意[]) => 无值): 本体;

        //@@{ 正在:on, "调整":"resize" }
        正在(事件: "调整", 监听器: () => 无值): 本体;

        //@@{ 一次:once }
        一次(事件: 文字, 监听器: (...参数组: 任意[]) => 无值): 本体;

        //@@{ 一次:once, "调整":"resize" }
        一次(事件: "调整", 监听器: () => 无值): 本体;

        //@@{ 预处理监听器:prependListener }
        预处理监听器(事件: 文字, 监听器: (...参数组: 任意[]) => 无值): 本体;

        //@@{ 预处理监听器:prependListener, "调整":"resize" }
        预处理监听器(事件: "调整", 监听器: () => 无值): 本体;

        //@@{ 预处理一次监听器:prependOnceListener }
        预处理一次监听器(事件: 文字, 监听器: (...参数组: 任意[]) => 无值): 本体;

        //@@{ 预处理一次监听器:prependOnceListener, "调整":"resize" }
        预处理一次监听器(事件: "调整", 监听器: () => 无值): 本体;

        //@@{ 清除行:clearLine, 方向_:Direction }
        清除行(目录: 方向_): 无值;

        //@@{ 清除光标以下屏幕:clearScreenDown }
        清除光标以下屏幕(): 无值;

        //@@{ 光标到:cursorTo }
        光标到(x: 数字, y: 数字): 无值;
        /**
         * @default `process.env`
         */

        //@@{ 获取颜色深度:getColorDepth }
        获取颜色深度(环境变量?: {}): 数字;

        //@@{ 具有颜色:hasColors }
        具有颜色(深度?: 数字): 真假;

        //@@{ 具有颜色:hasColors }
        具有颜色(环境变量?: {}): 真假;

        //@@{ 具有颜色:hasColors }
        具有颜色(深度: 数字, 环境变量?: {}): 真假;

        //@@{ 获取窗口大小:getWindowSize }
        获取窗口大小(): [数字, 数字];

        //@@{ 列组:columns }
        列组: 数字;

        //@@{ 行组:rows }
        行组: 数字;

        //@@{ 是绑定终端:isTTY }
        是绑定终端: 真假;
    }
}
